package com.algorithm.dac;

/**
 * @author xxy  使用分治的思想解决汉诺塔
 * @create 2021 3 25 9:04
 */
public class HanoiTower {
    public static void main(String[] args) {
        hanoiTower(3,'A','B','C');
    }
    //汉诺塔移动的方法
    //使用分治的思想
    public static void hanoiTower(int num,char a,char b,char c){
        //如果只有一个盘A->C
        if (num == 1) {
            System.out.println("第一个盘从"+a+"->"+c);
        }else {
            //如果num》=2，就把盘分成两部分，1.最下面的盘，和上面的所有盘
            //1.先吧最上面的盘移到B:A-B
            hanoiTower(num-1,a,c,b);
            //把最下面的移到C
            System.out.println("第"+num+"个盘从"+a+"->"+c);
            //把B塔的所有移到c:B-C

            hanoiTower(num-1,b,a,c);
        }
    }
}
